/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package imc;

/**
 *
 * @author Cássio Grancer Stein cassiostein@hotmail.com
 *
 */
public class MetodoIMC {

    private double imc;
    private String condicao = null;

    public MetodoIMC() {
    }

    public void fazerCalculo(double peso, double altura) throws RuntimeException {
        if (peso <= 0)
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        if (Double.isNaN(peso))
            throw new RuntimeException("Falha: O peso deve ser um número maior que zero");
        if ((0 < altura) && (altura < 3))
            imc = peso / (altura * altura);
        else
            throw new RuntimeException("Falha: A altura deve ser um número maior que zero e menor que 3m");
    }

    public void classificar(char sexo) throws RuntimeException {
        if ((sexo != 'F') && (sexo != 'M'))
            throw new RuntimeException("Falha: É necessário informar o sexo (M, F)");
        if (sexo == 'F') {
            if (imc < 19.1) {
                condicao = "Abaixo do peso";
            } else if (imc <= 25.8) {
                condicao = "No peso normal";
            } else if (imc <= 27.3) {
                condicao = "Marginalmente acima do peso";
            } else if (imc <= 32.3) {
                condicao = "Acima do peso ideal";
            } else if (imc > 32.3) {
                condicao = "Obeso";
            }
        }
        if (sexo == 'M') {
            if (imc < 20.7) {
                condicao = "Abaixo do peso";
            } else if (imc <= 26.4) {
                condicao = "No peso normal";
            } else if (imc <= 27.8) {
                condicao = "Marginalmente acima do peso";
            } else if (imc <= 31.1) {
                condicao = "Acima do peso ideal";
            } else if (imc > 31.1) {
                condicao = "Obeso";
            }
        }
    }

    public double getImc() {
        return imc;
    }

    public String getCondicao() {
        return condicao;
    }

}
